home *** CD-ROM | disk | FTP | other *** search
/ Champak 43 / Vol 43.iso / games / menininh.swf / scripts / __Packages / RC4.as < prev    next >
Encoding:
Text File  |  2007-07-06  |  3.1 KB  |  116 lines

  1. class RC4
  2. {
  3.    static var sbox = new Array(255);
  4.    static var mykey = new Array(255);
  5.    function RC4()
  6.    {
  7.    }
  8.    static function encrypt(src, key)
  9.    {
  10.       var _loc3_ = RC4.strToChars(src);
  11.       var _loc2_ = RC4.strToChars(key);
  12.       var _loc1_ = RC4.calculate(_loc3_,_loc2_);
  13.       trace(RC4.charsToStr(_loc1_));
  14.       return RC4.charsToHex(_loc1_);
  15.    }
  16.    static function decrypt(src, key)
  17.    {
  18.       var _loc3_ = RC4.hexToChars(src);
  19.       var _loc1_ = RC4.strToChars(key);
  20.       var _loc2_ = RC4.calculate(_loc3_,_loc1_);
  21.       return RC4.charsToStr(_loc2_);
  22.    }
  23.    static function initialize(pwd)
  24.    {
  25.       var _loc2_ = 0;
  26.       var _loc3_ = undefined;
  27.       var _loc4_ = pwd.length;
  28.       var _loc1_ = 0;
  29.       while(_loc1_ <= 255)
  30.       {
  31.          RC4.mykey[_loc1_] = pwd[_loc1_ % _loc4_];
  32.          RC4.sbox[_loc1_] = _loc1_;
  33.          _loc1_ = _loc1_ + 1;
  34.       }
  35.       _loc1_ = 0;
  36.       while(_loc1_ <= 255)
  37.       {
  38.          _loc2_ = (_loc2_ + RC4.sbox[_loc1_] + RC4.mykey[_loc1_]) % 256;
  39.          _loc3_ = RC4.sbox[_loc1_];
  40.          RC4.sbox[_loc1_] = RC4.sbox[_loc2_];
  41.          RC4.sbox[_loc2_] = _loc3_;
  42.          _loc1_ = _loc1_ + 1;
  43.       }
  44.    }
  45.    static function calculate(plaintxt, psw)
  46.    {
  47.       RC4.initialize(psw);
  48.       var _loc1_ = 0;
  49.       var _loc2_ = 0;
  50.       var _loc9_ = new Array();
  51.       var _loc7_ = undefined;
  52.       var _loc5_ = undefined;
  53.       var _loc6_ = undefined;
  54.       var _loc3_ = 0;
  55.       while(_loc3_ < plaintxt.length)
  56.       {
  57.          _loc1_ = (_loc1_ + 1) % 256;
  58.          _loc2_ = (_loc2_ + RC4.sbox[_loc1_]) % 256;
  59.          _loc5_ = RC4.sbox[_loc1_];
  60.          RC4.sbox[_loc1_] = RC4.sbox[_loc2_];
  61.          RC4.sbox[_loc2_] = _loc5_;
  62.          var _loc4_ = (RC4.sbox[_loc1_] + RC4.sbox[_loc2_]) % 256;
  63.          _loc7_ = RC4.sbox[_loc4_];
  64.          _loc6_ = plaintxt[_loc3_] ^ _loc7_;
  65.          _loc9_.push(_loc6_);
  66.          _loc3_ = _loc3_ + 1;
  67.       }
  68.       return _loc9_;
  69.    }
  70.    static function charsToHex(chars)
  71.    {
  72.       var _loc4_ = new String("");
  73.       var _loc3_ = new Array("0","1","2","3","4","5","6","7","8","9","a","b","c","d","e","f");
  74.       var _loc1_ = 0;
  75.       while(_loc1_ < chars.length)
  76.       {
  77.          _loc4_ += _loc3_[chars[_loc1_] >> 4] + _loc3_[chars[_loc1_] & 15];
  78.          _loc1_ = _loc1_ + 1;
  79.       }
  80.       return _loc4_;
  81.    }
  82.    static function hexToChars(hex)
  83.    {
  84.       var _loc3_ = new Array();
  85.       var _loc1_ = hex.substr(0,2) != "0x" ? 0 : 2;
  86.       while(_loc1_ < hex.length)
  87.       {
  88.          _loc3_.push(parseInt(hex.substr(_loc1_,2),16));
  89.          _loc1_ += 2;
  90.       }
  91.       return _loc3_;
  92.    }
  93.    static function charsToStr(chars)
  94.    {
  95.       var _loc3_ = new String("");
  96.       var _loc1_ = 0;
  97.       while(_loc1_ < chars.length)
  98.       {
  99.          _loc3_ += String.fromCharCode(chars[_loc1_]);
  100.          _loc1_ = _loc1_ + 1;
  101.       }
  102.       return _loc3_;
  103.    }
  104.    static function strToChars(str)
  105.    {
  106.       var _loc3_ = new Array();
  107.       var _loc1_ = 0;
  108.       while(_loc1_ < str.length)
  109.       {
  110.          _loc3_.push(str.charCodeAt(_loc1_));
  111.          _loc1_ = _loc1_ + 1;
  112.       }
  113.       return _loc3_;
  114.    }
  115. }
  116.